#ifndef PARSERSOAP_H_
#define PARSERSOAP_H_

#include <libxml/parser.h>  /*trabaja con los ficheros xml*/
#include <libxml/tree.h>    /*trabaja con el árbol generado de parsear el xml*/

#include <iostream>
#include <string>
#include "../Constantes.h"
#include "../XML/ParserXml.h"

//*****--CONSTANTES--******//
#define ENVELOPE "env:Envelope"
#define XMLNS "xmlns:env"
#define BODY "env:body"
#define CANT_ENTR_SOAP "cant_entradas"
#define CANT_SAL_SOAP "cant_salidas"
#define SIMULACION "simulacion"
#define RESULTADO "resultado"
#define CIRCUITO_SOAP "circuito"
#define ENTR_SOAP "entradas"
#define DATA "data"
#define VER "ver"
#define SIMULAR "simular"
#define NRO_ID_SOAP "nro_id"


class ParserSoap {
public:
/* Constructor de la clase
 * Pre:-
 * Post: instancia creada.
 */
	ParserSoap();
/* Destructor de la clase
 * Pre:-
 * Post: instancia destruida.
 */
	virtual ~ParserSoap();
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo Circuito
 * Pre:-
 * Post: -
 */
	void parsear_circuito(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo ListaDeCompuertas
 * Pre:-
 * Post: -
 */
	void parsear_compuertas(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo ListaDeEntradas
 * Pre:-
 * Post:-
 */
	void parsear_entradas(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo ListaDeSalidas
 * Pre:-
 * Post: -
 */
	void parsear_salidas(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo ListaDeConexiones
 * Pre:-
 * Post:-
 */
	void parsear_conexiones(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama de un hijo ListaDeCables
 * Pre:-
 * Post:-
 */
	void parsear_cables(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
/* toma los datos del primer nodo y lo agregan en los del segundo segun el diagrama
 * de un hijo ListaDeElementosExternos.
 * Pre:-
 * Post:-
 */
	void parsear_elementos_externos(xmlNodePtr nodeXml,xmlNodePtr nodeSoap);
};

#endif /* PARSERSOAP_H_ */
